## pval_cutoff: 0.05
## lfc_cutoff: 0.58
## low_counts_cutoff: 10
General statistics
# Number of samples
length(counts_data)
## [1] 6
# Number of genes
nrow(counts_data)
## [1] 43432
# Total counts
colSums(counts_data)
## SRR13535276 SRR13535278 SRR13535280 SRR13535288 SRR13535290 SRR13535292
## 2902259 2219026 3493884 7398768 5917922 3444284

Create DDS objects
# Create DESeqDataSet object
dds <- get_DESeqDataSet_obj(counts_data, ~ experimental_class_type)
## [1] TRUE
## [1] TRUE
## [1] "DESeqDataSet object of length 43432 with 0 metadata columns"
## [1] "DESeqDataSet object of length 13987 with 0 metadata columns"
colData(dds)
## DataFrame with 6 rows and 3 columns
## experimental_class_type regime treatment
## <factor> <factor> <character>
## SRR13535276 A in space without gravity without nanoceria
## SRR13535278 A in space without gravity without nanoceria
## SRR13535280 A in space without gravity without nanoceria
## SRR13535288 C in space with gravity without nanoceria
## SRR13535290 C in space with gravity without nanoceria
## SRR13535292 C in space with gravity without nanoceria
Sample-to-sample comparisons
# Transform data (blinded rlog)
rld <- get_transformed_data(dds)
PCA plot
pca <- rld$pca
pca_df <- cbind(as.data.frame(colData(dds)) %>% rownames_to_column(var = 'name'), pca$x)
summary(pca)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6
## Standard deviation 28.6351 27.8673 24.5344 22.1853 19.6117 7.713e-14
## Proportion of Variance 0.2666 0.2525 0.1957 0.1600 0.1251 0.000e+00
## Cumulative Proportion 0.2666 0.5192 0.7149 0.8749 1.0000 1.000e+00
ggplot(pca_df, aes(x = PC1, y = PC2, color = regime)) +
geom_point() +
geom_text(aes(label = name), position = position_nudge(y = -2), show.legend = F, size = 3) +
scale_color_manual(values = colors_default) +
scale_x_continuous(expand = c(0.2, 0))

Correlation heatmap
pheatmap(
cor(rld$matrix),
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
color = brewer.pal(8, 'YlOrRd')
)

Wald test results
# DE analysis using Wald test
dds_full <- DESeq(dds)
colData(dds_full)
## DataFrame with 6 rows and 4 columns
## experimental_class_type regime treatment sizeFactor
## <factor> <factor> <character> <numeric>
## SRR13535276 A in space without gravity without nanoceria 0.673801824016173
## SRR13535278 A in space without gravity without nanoceria 0.97121858611263
## SRR13535280 A in space without gravity without nanoceria 0.77562985499244
## SRR13535288 C in space with gravity without nanoceria 1.89546097064371
## SRR13535290 C in space with gravity without nanoceria 1.29594739319281
## SRR13535292 C in space with gravity without nanoceria 0.812357407878325
# Wald test results
res <- results(
dds_full,
contrast = c('experimental_class_type', condition, control),
alpha = pval_cutoff
)
res
## log2 fold change (MLE): experimental_class_type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 13987 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000098104 5.20716062255672 1.08810637571714 0.957175548824469 1.13678872914532 0.255626616142461 NA
## ENSMUSG00000103922 2.18954147307282 -0.284634439393815 1.93793841325912 -0.146874863229081 0.883230792960984 NA
## ENSMUSG00000033845 170.916987771633 -0.41826769983573 0.538548289993934 -0.776657743803144 0.437360723667909 0.902222072616056
## ENSMUSG00000102275 2.2584386859628 0.168849091861702 1.34831458932878 0.125229744748041 0.900341669693715 NA
## ENSMUSG00000025903 144.933745022753 -0.15890026936109 0.300848357125726 -0.528173964050217 0.597378598370545 0.934654723787112
## ... ... ... ... ... ... ...
## ENSMUSG00000095562 31.0099628974416 -0.837900153922194 0.807591999131932 -1.03752904291132 0.299489367669032 0.851726154360615
## ENSMUSG00000051412 1248.66836212848 -1.30495436917363 0.61195729731387 -2.13242717245404 0.0329717455765186 0.477463942938155
## ENSMUSG00000061654 90.6837939336194 -5.68609043903014 3.75938089673388 -1.51250713753697 NA NA
## ENSMUSG00000079834 57.7849565580819 -0.214786525835995 0.527699645995211 -0.40702419921264 0.683990214859256 0.951306026630298
## ENSMUSG00000096768 365.449663551056 -0.365749519073591 0.604848546095957 -0.604696037436728 0.545380981535452 0.928207309730241
mcols(res)
## DataFrame with 6 rows and 2 columns
## type description
## <character> <character>
## baseMean intermediate mean of normalized counts for all samples
## log2FoldChange results log2 fold change (MLE): experimental_class_type A vs C
## lfcSE results standard error: experimental class type A vs C
## stat results Wald statistic: experimental class type A vs C
## pvalue results Wald test p-value: experimental class type A vs C
## padj results BH adjusted p-values
summary(res)
##
## out of 13987 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 7, 0.05%
## LFC < 0 (down) : 62, 0.44%
## outliers [1] : 122, 0.87%
## low counts [2] : 2709, 19%
## (mean count < 7)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
Summary details
# Upregulated genes (LFC > 0)
res_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res[which(is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 122 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000103509 9.65154098423442 -4.47709636694479 2.50281449786898 -1.78882468946732 NA NA
## ENSMUSG00000079554 38.5290937983429 -6.57838563802182 2.02665383587185 -3.2459345160896 NA NA
## ENSMUSG00000102425 25.5762517386943 6.47326709333826 3.47959671778327 1.86034981015333 NA NA
## ENSMUSG00000042793 62.6834254269681 -5.87668103057092 1.71537758224308 -3.42588191160013 NA NA
## ENSMUSG00000104436 35.5636553635441 2.34224390815926 1.82393751516655 1.28416894147022 NA NA
## ... ... ... ... ... ... ...
## ENSMUSG00000035395 31.1250871524031 -4.85792774790197 1.75657246832868 -2.76557206462658 NA NA
## ENSMUSG00000079481 16.294613817476 -6.16684864174885 2.39485047018837 -2.5750453811272 NA NA
## ENSMUSG00000047045 64.0513713809498 -1.25589064636123 1.03088501203652 -1.21826453163792 NA NA
## ENSMUSG00000046873 209.511041049578 -2.16804330763267 1.07471530586321 -2.01731872227435 NA NA
## ENSMUSG00000061654 90.6837939336194 -5.68609043903014 3.75938089673388 -1.51250713753697 NA NA
# Low counts (only padj is NA)
res[which(is.na(res$padj) & !is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 2709 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000098104 5.20716062255672 1.08810637571714 0.957175548824469 1.13678872914532 0.255626616142461 NA
## ENSMUSG00000103922 2.18954147307282 -0.284634439393815 1.93793841325912 -0.146874863229081 0.883230792960984 NA
## ENSMUSG00000102275 2.2584386859628 0.168849091861702 1.34831458932878 0.125229744748041 0.900341669693715 NA
## ENSMUSG00000103280 3.07253241661049 -0.649675189617721 1.17510855975764 -0.55286397518176 0.580356557188648 NA
## ENSMUSG00000033740 2.70537289783242 -2.69693861716501 2.48269071566368 -1.08629665392858 0.277347766932786 NA
## ... ... ... ... ... ... ...
## ENSMUSG00000047757 2.06326311873781 0.5980254818538 1.64690604326327 0.363120582561493 0.716514809843951 NA
## ENSMUSG00000040621 4.80775812312957 0.00527243772150041 1.37489312970248 0.00383479821638307 0.996940281208562 NA
## ENSMUSG00000087340 3.5063700475092 0.546145384863663 1.22534731956703 0.445706597747846 0.655809198089475 NA
## ENSMUSG00000087201 1.24948752726328 -2.29630894026919 2.1121388457669 -1.08719601690552 0.276950190752603 NA
## ENSMUSG00000081137 3.15865573469166 1.37083695359083 1.29288937165862 1.06028944443422 0.289012939889842 NA
Shrunken LFC results
plotMA(res)

# Shrunken LFC results
res_shrunken <- lfcShrink(
dds_full,
coef = str_c('experimental_class_type_', condition, '_vs_', control),
type = 'apeglm'
)
res_shrunken
## log2 fold change (MAP): experimental class type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 13987 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000098104 5.20716062255672 0.0404896354583624 0.189952565884354 0.255626616142461 0.832512747364547
## ENSMUSG00000103922 2.18954147307282 -0.00261224918326343 0.186144392956759 0.883230792960984 NA
## ENSMUSG00000033845 170.916987771633 -0.0457921061655939 0.18396101781396 0.437360723667909 0.902904748560427
## ENSMUSG00000102275 2.2584386859628 0.0032508798956198 0.185246924447913 0.900341669693715 NA
## ENSMUSG00000025903 144.933745022753 -0.0450125432612784 0.163789812457455 0.597378598370545 0.935979366124292
## ... ... ... ... ... ...
## ENSMUSG00000095562 31.0099628974416 -0.0424246017931211 0.18922952988092 0.299489367669032 0.852511625629923
## ENSMUSG00000051412 1248.66836212848 -0.129155978743731 0.246376708158993 0.0329717455765186 0.489113528860005
## ENSMUSG00000061654 90.6837939336194 -0.00697556326514523 0.187166051994795 NA NA
## ENSMUSG00000079834 57.7849565580819 -0.0237925292660755 0.178234674618541 0.683990214859256 0.953237907987078
## ENSMUSG00000096768 365.449663551056 -0.0319207757138897 0.182333453921616 0.545380981535452 0.929338213184564
plotMA(res_shrunken)

mcols(res_shrunken)
## DataFrame with 5 rows and 2 columns
## type description
## <character> <character>
## baseMean intermediate mean of normalized counts for all samples
## log2FoldChange results log2 fold change (MAP): experimental class type A vs C
## lfcSE results posterior SD: experimental class type A vs C
## pvalue results Wald test p-value: experimental class type A vs C
## padj results BH adjusted p-values
summary(res_shrunken, alpha = pval_cutoff)
##
## out of 13987 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 6, 0.043%
## LFC < 0 (down) : 53, 0.38%
## outliers [1] : 122, 0.87%
## low counts [2] : 2170, 16%
## (mean count < 5)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
Summary details
# Upregulated genes (LFC > 0)
res_shrunken_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_shrunken_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res_shrunken[which(is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 122 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000103509 9.65154098423442 -0.0172389998661714 0.18804638468295 NA NA
## ENSMUSG00000079554 38.5290937983429 -0.0328640409698524 0.191280261877137 NA NA
## ENSMUSG00000102425 25.5762517386943 0.00920409787204052 0.187308112337825 NA NA
## ENSMUSG00000042793 62.6834254269681 -0.0390345160771787 0.193053655417202 NA NA
## ENSMUSG00000104436 35.5636553635441 0.0208842963647256 0.188164087508974 NA NA
## ... ... ... ... ... ...
## ENSMUSG00000035395 31.1250871524031 -0.0352868477104716 0.191815911142853 NA NA
## ENSMUSG00000079481 16.294613817476 -0.0223907309400847 0.188940874084597 NA NA
## ENSMUSG00000047045 64.0513713809498 -0.0387216473581504 0.190245275936379 NA NA
## ENSMUSG00000046873 209.511041049578 -0.0571882685626593 0.198345875439996 NA NA
## ENSMUSG00000061654 90.6837939336194 -0.00697556326514523 0.187166051994795 NA NA
# Low counts (only padj is NA)
res_shrunken[which(is.na(res_shrunken$padj) & !is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 2170 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000103922 2.18954147307282 -0.00261224918326343 0.186144392956759 0.883230792960984 NA
## ENSMUSG00000102275 2.2584386859628 0.0032508798956198 0.185246924447913 0.900341669693715 NA
## ENSMUSG00000103280 3.07253241661049 -0.0163189691437432 0.185652787273192 0.580356557188648 NA
## ENSMUSG00000033740 2.70537289783242 -0.0137001068426724 0.187395577902333 0.277347766932786 NA
## ENSMUSG00000103629 3.84572295415489 -0.0165203117879788 0.187513445847095 0.280953475739722 NA
## ... ... ... ... ... ...
## ENSMUSG00000047757 2.06326311873781 0.00775611859135211 0.186031892423555 0.716514809843951 NA
## ENSMUSG00000040621 4.80775812312957 0.000178020792367815 0.185274884577293 0.996940281208562 NA
## ENSMUSG00000087340 3.5063700475092 0.0125150037444469 0.185479197266707 0.655809198089475 NA
## ENSMUSG00000087201 1.24948752726328 -0.0179112675661988 0.187640884635034 0.276950190752603 NA
## ENSMUSG00000081137 3.15865573469166 0.0285040408269337 0.188340254886495 0.289012939889842 NA
Visualizing results
Heatmaps
# Plot normalized counts (z-scores)
pheatmap(counts_sig_norm[2:7],
color = brewer.pal(8, 'YlOrRd'),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
border_color = NA,
fontsize = 10,
scale = 'row',
fontsize_row = 10,
height = 20)

# Plot log-transformed counts
pheatmap(counts_sig_log[2:7],
color = rev(brewer.pal(8, 'RdYlBu')),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
border_color = NA,
fontsize = 10,
fontsize_row = 10,
height = 20)

# Plot log-transformed counts (top 24 DE genes)
pheatmap((counts_sig_log %>% filter(ensembl_gene_id %in% res_sig_df$ensembl_gene_id[1:24]))[2:7],
color = rev(brewer.pal(8, 'RdYlBu')),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
fontsize = 10,
fontsize_row = 10,
height = 20)

Volcano plots
# Unshrunken LFC
res_df %>%
mutate(
sig_threshold = if_else(
padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
'non-DE'
)
) %>%
filter(!is.na(sig_threshold)) %>%
ggplot() +
geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
scale_color_manual(values = c('blue', 'red', 'gray')) +
xlab('log2 fold change') +
ylab('-log10 adjusted p-value')

# Shrunken LFC
res_shrunken_df %>%
mutate(
sig_threshold = if_else(
padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
'non-DE'
)
) %>%
filter(!is.na(sig_threshold)) %>%
ggplot() +
geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
scale_color_manual(values = c('blue', 'red', 'gray')) +
xlab('log2 fold change') +
ylab('-log10 adjusted p-value')

GSEA (all)
Hallmark genesets
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

GSEA (DE)
Hallmark genesets
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

System Info
sessionInfo()
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] grid parallel stats4 stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] VennDiagram_1.6.20 futile.logger_1.4.3 fgsea_1.12.0 Rcpp_1.0.3 RColorBrewer_1.1-2 pheatmap_1.0.12 DESeq2_1.26.0 SummarizedExperiment_1.16.1 DelayedArray_0.12.3 BiocParallel_1.20.1 matrixStats_0.57.0 Biobase_2.46.0 GenomicRanges_1.38.0 GenomeInfoDb_1.22.1 IRanges_2.20.2 S4Vectors_0.24.4 BiocGenerics_0.32.0 scales_1.1.1 forcats_0.4.0 stringr_1.4.0 dplyr_1.0.2 purrr_0.3.3 readr_1.3.1 tidyr_1.0.0 tibble_3.1.0 ggplot2_3.3.3 tidyverse_1.2.1
##
## loaded via a namespace (and not attached):
## [1] colorspace_1.4-1 ellipsis_0.3.0 htmlTable_1.13.3 XVector_0.26.0 base64enc_0.1-3 rstudioapi_0.10 farver_2.1.0 bit64_0.9-7 mvtnorm_1.1-1 apeglm_1.8.0 AnnotationDbi_1.48.0 fansi_0.4.0 lubridate_1.7.4 xml2_1.2.2 splines_3.6.3 geneplotter_1.64.0 knitr_1.25 Formula_1.2-3 jsonlite_1.6 broom_0.7.5 annotate_1.64.0 cluster_2.1.0 png_0.1-7 compiler_3.6.3 httr_1.4.1 backports_1.1.5 assertthat_0.2.1 Matrix_1.2-18 cli_1.1.0 formatR_1.7 acepack_1.4.1 htmltools_0.5.1.1 tools_3.6.3 coda_0.19-3 gtable_0.3.0 glue_1.4.2 GenomeInfoDbData_1.2.2 fastmatch_1.1-0 bbmle_1.0.23.1 cellranger_1.1.0 jquerylib_0.1.3 vctrs_0.3.4 xfun_0.22 rvest_0.3.5 lifecycle_0.2.0 XML_3.99-0.3 MASS_7.3-51.5 zlibbioc_1.32.0 hms_0.5.2 lambda.r_1.2.4 yaml_2.2.0 memoise_1.1.0 gridExtra_2.3 emdbook_1.3.12 sass_0.3.1 bdsmatrix_1.3-4 rpart_4.1-15 latticeExtra_0.6-29 stringi_1.4.3 RSQLite_2.2.1 genefilter_1.68.0 checkmate_1.9.4 rlang_0.4.8 pkgconfig_2.0.3 bitops_1.0-6 evaluate_0.14 lattice_0.20-38 labeling_0.3 htmlwidgets_1.5.1 bit_1.1-15.1 tidyselect_1.1.0 plyr_1.8.4 magrittr_1.5 R6_2.4.0 generics_0.0.2 Hmisc_4.3-0 DBI_1.1.0 pillar_1.5.1 haven_2.2.0 foreign_0.8-75 withr_2.1.2 survival_3.1-8 RCurl_1.95-4.12 nnet_7.3-12 modelr_0.1.5 crayon_1.3.4 futile.options_1.0.1 utf8_1.1.4 rmarkdown_2.7 jpeg_0.1-8.1 locfit_1.5-9.4 readxl_1.3.1 data.table_1.13.6 blob_1.2.1 digest_0.6.27 xtable_1.8-4 numDeriv_2016.8-1.1 munsell_0.5.0 bslib_0.2.4